home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.4)
-
- import unittest
- from string import Template
-
- class Bag:
- pass
-
-
- class Mapping:
-
- def __getitem__(self, name):
- obj = self
- for part in name.split('.'):
-
- try:
- obj = getattr(obj, part)
- continue
- except AttributeError:
- raise KeyError(name)
- continue
-
-
-
- return obj
-
-
-
- class TestTemplate(unittest.TestCase):
-
- def test_regular_templates(self):
- s = Template('$who likes to eat a bag of $what worth $$100')
- self.assertEqual(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes to eat a bag of ham worth $100')
- self.assertRaises(KeyError, s.substitute, dict(who = 'tim'))
-
-
- def test_regular_templates_with_braces(self):
- s = Template('$who likes ${what} for ${meal}')
- d = dict(who = 'tim', what = 'ham', meal = 'dinner')
- self.assertEqual(s.substitute(d), 'tim likes ham for dinner')
- self.assertRaises(KeyError, s.substitute, dict(who = 'tim', what = 'ham'))
-
-
- def test_escapes(self):
- eq = self.assertEqual
- s = Template('$who likes to eat a bag of $$what worth $$100')
- eq(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes to eat a bag of $what worth $100')
- s = Template('$who likes $$')
- eq(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes $')
-
-
- def test_percents(self):
- eq = self.assertEqual
- s = Template('%(foo)s $foo ${foo}')
- d = dict(foo = 'baz')
- eq(s.substitute(d), '%(foo)s baz baz')
- eq(s.safe_substitute(d), '%(foo)s baz baz')
-
-
- def test_stringification(self):
- eq = self.assertEqual
- s = Template('tim has eaten $count bags of ham today')
- d = dict(count = 7)
- eq(s.substitute(d), 'tim has eaten 7 bags of ham today')
- eq(s.safe_substitute(d), 'tim has eaten 7 bags of ham today')
- s = Template('tim has eaten ${count} bags of ham today')
- eq(s.substitute(d), 'tim has eaten 7 bags of ham today')
-
-
- def test_SafeTemplate(self):
- eq = self.assertEqual
- s = Template('$who likes ${what} for ${meal}')
- eq(s.safe_substitute(dict(who = 'tim')), 'tim likes ${what} for ${meal}')
- eq(s.safe_substitute(dict(what = 'ham')), '$who likes ham for ${meal}')
- eq(s.safe_substitute(dict(what = 'ham', meal = 'dinner')), '$who likes ham for dinner')
- eq(s.safe_substitute(dict(who = 'tim', what = 'ham')), 'tim likes ham for ${meal}')
- eq(s.safe_substitute(dict(who = 'tim', what = 'ham', meal = 'dinner')), 'tim likes ham for dinner')
-
-
- def test_invalid_placeholders(self):
- raises = self.assertRaises
- s = Template('$who likes $')
- raises(ValueError, s.substitute, dict(who = 'tim'))
- s = Template('$who likes ${what)')
- raises(ValueError, s.substitute, dict(who = 'tim'))
- s = Template('$who likes $100')
- raises(ValueError, s.substitute, dict(who = 'tim'))
-
-
- def test_delimiter_override(self):
-
- class PieDelims(Template):
- delimiter = '@'
-
- s = PieDelims('@who likes to eat a bag of @{what} worth $100')
- self.assertEqual(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes to eat a bag of ham worth $100')
-
-
- def test_idpattern_override(self):
-
- class PathPattern(Template):
- idpattern = '[_a-z][._a-z0-9]*'
-
- m = Mapping()
- m.bag = Bag()
- m.bag.foo = Bag()
- m.bag.foo.who = 'tim'
- m.bag.what = 'ham'
- s = PathPattern('$bag.foo.who likes to eat a bag of $bag.what')
- self.assertEqual(s.substitute(m), 'tim likes to eat a bag of ham')
-
-
- def test_pattern_override(self):
-
- class MyPattern(Template):
- pattern = '\n (?P<escaped>@{2}) |\n @(?P<named>[_a-z][._a-z0-9]*) |\n @{(?P<braced>[_a-z][._a-z0-9]*)} |\n (?P<invalid>@)\n '
-
- m = Mapping()
- m.bag = Bag()
- m.bag.foo = Bag()
- m.bag.foo.who = 'tim'
- m.bag.what = 'ham'
- s = MyPattern('@bag.foo.who likes to eat a bag of @bag.what')
- self.assertEqual(s.substitute(m), 'tim likes to eat a bag of ham')
-
- class BadPattern(Template):
- pattern = '\n (?P<badname>.*) |\n (?P<escaped>@{2}) |\n @(?P<named>[_a-z][._a-z0-9]*) |\n @{(?P<braced>[_a-z][._a-z0-9]*)} |\n (?P<invalid>@) |\n '
-
- s = BadPattern('@bag.foo.who likes to eat a bag of @bag.what')
- self.assertRaises(ValueError, s.substitute, { })
- self.assertRaises(ValueError, s.safe_substitute, { })
-
-
- def test_unicode_values(self):
- s = Template('$who likes $what')
- d = dict(who = u't├┐m', what = u'f├╛\x0ced')
- self.assertEqual(s.substitute(d), u't├┐m likes f├╛\x0ced')
-
-
- def test_keyword_arguments(self):
- eq = self.assertEqual
- s = Template('$who likes $what')
- eq(s.substitute(who = 'tim', what = 'ham'), 'tim likes ham')
- eq(s.substitute(dict(who = 'tim'), what = 'ham'), 'tim likes ham')
- eq(s.substitute(dict(who = 'fred', what = 'kung pao'), who = 'tim', what = 'ham'), 'tim likes ham')
- s = Template('the mapping is $mapping')
- eq(s.substitute(dict(foo = 'none'), mapping = 'bozo'), 'the mapping is bozo')
- eq(s.substitute(dict(mapping = 'one'), mapping = 'two'), 'the mapping is two')
-
-
- def test_keyword_arguments_safe(self):
- eq = self.assertEqual
- raises = self.assertRaises
- s = Template('$who likes $what')
- eq(s.safe_substitute(who = 'tim', what = 'ham'), 'tim likes ham')
- eq(s.safe_substitute(dict(who = 'tim'), what = 'ham'), 'tim likes ham')
- eq(s.safe_substitute(dict(who = 'fred', what = 'kung pao'), who = 'tim', what = 'ham'), 'tim likes ham')
- s = Template('the mapping is $mapping')
- eq(s.safe_substitute(dict(foo = 'none'), mapping = 'bozo'), 'the mapping is bozo')
- eq(s.safe_substitute(dict(mapping = 'one'), mapping = 'two'), 'the mapping is two')
- d = dict(mapping = 'one')
- raises(TypeError, s.substitute, d, { })
- raises(TypeError, s.safe_substitute, d, { })
-
-
- def test_delimiter_override(self):
- eq = self.assertEqual
- raises = self.assertRaises
-
- class AmpersandTemplate(Template):
- delimiter = '&'
-
- s = AmpersandTemplate('this &gift is for &{who} &&')
- eq(s.substitute(gift = 'bud', who = 'you'), 'this bud is for you &')
- raises(KeyError, s.substitute)
- eq(s.safe_substitute(gift = 'bud', who = 'you'), 'this bud is for you &')
- eq(s.safe_substitute(), 'this &gift is for &{who} &')
- s = AmpersandTemplate('this &gift is for &{who} &')
- raises(ValueError, s.substitute, dict(gift = 'bud', who = 'you'))
- eq(s.safe_substitute(), 'this &gift is for &{who} &')
-
-
-
- def test_main():
- test_support = test_support
- import test
- test_classes = [
- TestTemplate]
- test_support.run_unittest(*test_classes)
-
- if __name__ == '__main__':
- test_main()
-
-